package com.zsj.mysql.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsj.entity.StatisticRechargeBean;
import com.zsj.mysql.entity.DyMobileRecharge;
import com.zsj.mysql.entity.RechargeStatics;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 字节手机充值表 Mapper 接口
 * </p>
 *
 * @author
 * @since
 */
public interface DyMobileRechargeMapper extends BaseMapper<DyMobileRecharge> {

    List<DyMobileRecharge> getFinishByDayAndAppId(@Param("month") String month,
                                                  @Param("day") Integer day,
                                                  @Param("appId") String appId);

    DyMobileRecharge getByOrderNo(@Param("month") String month, @Param("orderNo") String orderNo);

    DyMobileRecharge getBySelfOrderNo(@Param("month") String month, @Param("orderNo") String orderNo);

    int updateFinal(@Param("month") String month, @Param("entity") DyMobileRecharge entity);

    int updateNotify(@Param("month") String month,
                     @Param("notifyStatus") Integer notifyStatus,
                     @Param("lastNotifyTime") String lastNotifyTime,
                     @Param("chargeNo") String chargeNo);

    List<DyMobileRecharge> getNeedNotify(@Param("month") String month,
                                         @Param("lastTime") String lastTime,
                                         @Param("notifyTimes") Integer notifyTimes);

    List<StatisticRechargeBean> getSuccStatistic(@Param("month") String month,
                                                 @Param("txnDate") String txnDate,
                                                 @Param("appId") String appId);

    List<StatisticRechargeBean> getTotalStatistic(@Param("month") String month,
                                                  @Param("txnDate") String txnDate,
                                                  @Param("appId") String appId);

    List<StatisticRechargeBean> getRateStatistic(@Param("month") String month,
                                                 @Param("txnDate") String txnDate,
                                                 @Param("time") Integer time,
                                                 @Param("appId") String appId);

    int updateReorder(@Param("month") String month,
                      @Param("reorderStatus") Integer reorderStatus,
                      @Param("lastReorderTime") String lastReorderTime,
                      @Param("chargeNo") String chargeNo);

    /**
     * 自动重发任务查询待重发数据，需要重发状态为待重发，交易状态为处理中，加上时间范围、重发次数限制
     *
     * @param month
     * @param txnDate
     * @param reorderTimes
     * @param startTime
     * @param endTime
     * @param count
     * @return
     */
    List<DyMobileRecharge> getNeedReorderByStatus(@Param("month") String month,
                                                  @Param("txnDate") String txnDate,
                                                  @Param("reorderTimes") Integer reorderTimes,
                                                  @Param("startTime") String startTime,
                                                  @Param("endTime") String endTime,
                                                  @Param("count") Integer count);

    /**
     * 日终金额统计，根据终态时间，统计成功和返销的
     * @param month
     * @param finishDate
     * @return
     */
    List<RechargeStatics> getAmtStatistic(@Param("month") String month,
                                          @Param("finishDate") String finishDate);
}
